/*
 * DIO.h
 *
 * Created: 9/04/2012 12:13:42 AM
 *  Author: Richard
 */ 


#ifndef DIO_H_
#define DIO_H_

#include <avr/io.h>
#include "stdio.h"
#include "cdef.h"

typedef enum
{
	tLo = 0,
	tHi
} DIO_tenLogicLevel;

typedef enum
{
	#if 0
	DIO_nenLED = 0,		/* output */
	DIO_nenChipSelect,	/* input  */
	DIO_nenMOSI,		/* input  */
	DIO_nenMISO,		/* output */
	DIO_nenSCK,			/* input  */
	
	DIO_nenV18_EN,		/* output */
	DIO_nenV33_EN,		/* output */
	DIO_nenV50_EN,		/* output */
	DIO_nenV_OK,		/* input  */
	DIO_nenSDA,			/*		  */
	DIO_nenSCL,			/* output */
	DIO_nenVIN_SENSE,	/* input  */
	
	DIO_nenSD_OK,		/* input  */
	DIO_nenSD_EN,		/* output */
	DIO_nenRTC_INT,		/* input  */
	DIO_nenVBI_OK,		/* input  */
	DIO_nenVBO_EN,		/* output */
	DIO_nenVBO_OK,		/* input  */
	DIO_nenECLK_EN,		/* output */
	DIO_nenERST,		/* output */
	#else
	DIO_nenCurrent = 0,
	DIO_nenVoltage,
	DIO_nenLED1,
	DIO_nenLED2,
	DIO_nenLED3,
	DIO_nenServo,
	#endif
	
	DIO_nenNumberOfPins
} DIO_tenPinName;

void DIO_vInit( void );
void DIO_vSetOutputLevel( DIO_tenPinName enPin, DIO_tenLogicLevel enLevel );
void DIO_vToggleOutputLevel( DIO_tenPinName enPin );
DIO_tenLogicLevel DIO_enGetInputLevel( DIO_tenPinName enPin );


#endif /* DIO_H_ */
